package kd.bos.openapi.sdk.response;
import kd.bos.openapi.sdk.response.result.ExceptionResult;
import kd.bos.openapi.sdk.response.result.Result;
import kd.bos.openapi.sdk.response.result.ResultCode;
import kd.bos.openapi.sdk.response.result.SuccessResult;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

/**
 * @Deacription 请求响应ResponseFactory对象，该对象主要目的是对service层返回结果统一封装后返回给controller，
 * 可以根据各自业务需要更改，如果不需要封装一层，可以直接返回Controller
 * @author johnz
 * @date 2022年4月6日
 */
public class ResponseFactory {
    // 创建成功响应
    public static <T> ResponseEntity<Result<T>> success(T data) {
        return ResponseEntity.ok(new SuccessResult<T>(data));
    }

    // 创建失败响应
    public static <T>ResponseEntity<Result<T>> fail(ResultCode resultCode) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ExceptionResult(resultCode.getCode(), resultCode.getMessage()));
    }

}
